package com.itheima.stock.stream;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.function.Consumer;

/*
    Stream流中三类方法之一 :  终结方法
    1 void forEach(Consumer action)：对此流的每个元素执行操作
        Consumer接口中的方法 void accept(T t)：对给定的参数执行此操作
    2 long count()：返回此流中的元素数
    */
@SpringBootTest
public class StreamDemo4 {
    @Test
    public void StreamTest4() {
        ArrayList<String> list = new ArrayList<>();
        list.add("张无忌");
        list.add("张翠山");
        list.add("张三丰");
        list.add("谢广坤");

        // long count()：返回此流中的元素数
        long count = list.stream().count();
        System.out.println(count);
    }

    // void forEach(Consumer action)：对此流的每个元素执行操作
    @Test
     void method1() {
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("张无忌");
        list1.add("张翠山");
        list1.add("张三丰");
        list1.add("谢广坤");
        // 把list集合中的元素放在stream流中
        // forEach方法会循环遍历流中的数据
        // 并循环调用accept方法 , 把数据传给s
        // 所以s就代表的是流中的每一个数据
        // 我们只要在accept方法中对数据做业务逻辑处理即可
        list1.stream().forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });

        System.out.println("=====================");

        list1.stream().forEach((String s) -> {
            System.out.println(s);
        });

        System.out.println("=====================");

        list1.stream().forEach(s -> {
            System.out.println(s);
        });
    }

}
